For the current generation of videogame consoles, games are distributed and stored on optical disks or on a network location. Most game titles have art assets such as sound files, images, videos, map “levels”, character models, etc that are stored on these disks or remote network. The typical size for these assets is in the 4 to 6 GB range. As such, all of the assets for a game will not fit into the amount of RAM typically associated with a game console resulting in games with multiple “levels”, e.g. areas, maps, missions, matches or other logical ways of dividing the game play into sections. When a game transitions between levels, the assets for the new level must be read from the optical disk into RAM. Because of the high latency of reading data from an optical disk or from the network, many games and users experience painful long pauses or “load times” during these transitions.
The latency of reading data from a hard drive is lower than reading from an optical drive and reading from RAM is much faster than reading from a hard drive. If assets are loaded from the optical disk or network into one of these lower latency locations before they are needed, then the level load time can be substantially reduced.
Typically, in non gaming systems, a cache is used to reduce the load time associated with optical disks. When a software application is executed on the optical disk, a cache is created in the RAM or hard drive. When data is requested from the optical disk, the system first checks the cache for the requested data. If the data is in the cache then the data is retrieved from the cache rather than the optical disk, otherwise the data is requested from the optical disk and then stored in the cache. If the cache is full, then the newly requested data is substituted for some piece of data that has not be requested for the longest amount of time. This type of caching is known as most recently used.
Because data that is read recently is likely to be read again in software applications, this method of caching is very effective. However, because videogames are largely user-directed, they generally do not lend themselves to this most recently used caching scheme. Often decisions that are made by the player will lead down a predictable path which leads to future decision points. As a result, once a set of assets have been loaded and used, they may not be needed again for some time, if ever, making traditional caching systems ineffective. For example, if a user completes a level they may be shown a video clip. The video clip is only shown after completion of the associated level and will never be shown again. Thus, a most recently used caching scheme in a videogame would not be useful in this scenario.